package Demo3;

import java.util.Stack;

public class MyQueue {
    //入队时，把所有元素放到第一个栈中
    //出队时（判断空不空）把第一个栈的所有元素全部倒回第二个栈中，出第二个栈的栈顶元素
    //定义两个栈
    Stack<Integer> s1;
    Stack<Integer> s2;
    //构造方法
    public MyQueue() {
        s1 = new Stack<>();
        s2 = new Stack<>();
    }
    //统一入到s1
    public void push(int x) {
        s1.push(x);
    }
    //出的时候统一出s2的
    public int pop() {
        if(s1.empty()){
            return -1;
        }
        while(!s1.empty()){
            s2.push(s1.pop());
        }
        int x = s2.pop();
        while(!s2.empty()){
            s1.push(s2.pop());
        }
        return x;
    }

    public int peek() {
        if(s1.empty()){
            return -1;
        }
        while(!s1.empty()){
            s2.push(s1.pop());
        }
        int x = s2.peek();
        while(!s2.empty()){
            s1.push(s2.pop());
        }
        return x;
    }

    public boolean empty() {
        return s1.empty();
    }
    
}
